home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
X User Tools
/
X User Tools (O'Reilly and Associates)(1994).ISO
/
sun4c
/
archive
/
tcltk.z
/
tcltk
/
man
/
catn
/
switch.n
< prev
next >
Wrap
Text File
|
1994-09-20
|
4KB
|
133 lines
switch(n) Tcl Built-In Commands 7.0
_________________________________________________________________
NAME
switch - Evaluate one of several scripts, depending on a
given value
SYNOPSIS
switch ?_o_p_t_i_o_n_s? _s_t_r_i_n_g _p_a_t_t_e_r_n _b_o_d_y ?_p_a_t_t_e_r_n _b_o_d_y ...?
switch ?_o_p_t_i_o_n_s? _s_t_r_i_n_g {_p_a_t_t_e_r_n _b_o_d_y ?_p_a_t_t_e_r_n _b_o_d_y ...?}
_________________________________________________________________
DESCRIPTION
The switch command matches its _s_t_r_i_n_g argument against each
of the _p_a_t_t_e_r_n arguments in order. As soon as it finds a
_p_a_t_t_e_r_n that matches _s_t_r_i_n_g it evaluates the following _b_o_d_y
argument by passing it recursively to the Tcl interpreter
and returns the result of that evaluation. If the last _p_a_t_-
_t_e_r_n argument is default then it matches anything. If no
_p_a_t_t_e_r_n argument matches _s_t_r_i_n_g and no default is given,
then the switch command returns an empty string.
If the initial arguments to switch start with - then they
are treated as options. The following options are currently
supported:
-exact Use exact matching when comparing _s_t_r_i_n_g to a pat-
tern. This is the default.
-glob When matching _s_t_r_i_n_g to the patterns, use glob-
style matching (i.e. the same as implemented by
the string match command).
-regexp When matching _s_t_r_i_n_g to the patterns, use regular
expression matching (i.e. the same as implemented
by the regexp command).
-- Marks the end of options. The argument following
this one will be treated as _s_t_r_i_n_g even if it
starts with a -.
Two syntaxes are provided for the _p_a_t_t_e_r_n and _b_o_d_y argu-
ments. The first uses a separate argument for each of the
patterns and commands; this form is convenient if substitu-
tions are desired on some of the patterns or commands. The
second form places all of the patterns and commands together
into a single argument; the argument must have proper list
structure, with the elements of the list being the patterns
and commands. The second form makes it easy to construct
multi-line switch commands, since the braces around the
whole list make it unnecessary to include a backslash at the
end of each line. Since the _p_a_t_t_e_r_n arguments are in braces
Tcl 1
switch(n) Tcl Built-In Commands 7.0
in the second form, no command or variable substitutions are
performed on them; this makes the behavior of the second
form different than the first form in some cases.
If a _b_o_d_y is specified as ``-'' it means that the _b_o_d_y for
the next pattern should also be used as the body for this
pattern (if the next pattern also has a body of ``-'' then
the body after that is used, and so on). This feature makes
it possible to share a single _b_o_d_y among several patterns.
Below are some examples of switch commands:
switch abc a - b {format 1} abc {format 2} default {format 3}
will return 2,
switch -regexp aaab {
^a.*b$ -
b {format 1}
a* {format 2}
default {format 3}
}
will return 1, and
switch xyz {
a
-
b
{format 1}
a*
{format 2}
default
{format 3}
}
will return 3.
KEYWORDS
switch, match, regular expression
Tcl 2